import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import numpy as np

# ===========================================================
#                       字体/风格设置
# ===========================================================
custom_font = FontProperties(fname="./Microsoft_YaHei.ttc")

#print(plt.style.available)                  # 查看支持的主题
#plt.style.use("seaborn-v0_8-paper")         # 设置主题
plt.grid("on", color="lightgray", lw=0.25)   # 网格开关
plt.rcParams['axes.unicode_minus'] = False   # 正常显示负号

# ===========================================================
#                         画布设置
# ===========================================================
#plt.figure(figsize=(10, 6.18), dpi=10)

# ===========================================================
#                       xy轴标题设置
# ===========================================================
plt.xlabel("这是x", fontproperties=custom_font)
plt.ylabel("这是y", fontproperties=custom_font)
plt.title("这是title", fontproperties=custom_font, fontsize=15)
#plt.yticks(fontsize=10)
#plt.xticks(fontsize=10)
plt.xlim(xmin=-1, xmax=100)                  # x轴范围
plt.ylim(ymin=-1, ymax=1)                    
plt.locator_params('x', nbins=20)            # x轴刻度
plt.locator_params('y', nbins=10)

#plt.gca().spines['top'].set_visible(False)
#plt.gca().spines['right'].set_visible(False)
#plt.gca().spines['bottom'].set_visible(False)
#plt.gca().spines['left'].set_visible(False)

# ===========================================================
#                         数据绘制
# marker:
#    ‘.’：点(point marker)
#    ‘,’：像素点(pixel marker)
#    ‘o’：圆形(circle marker)
#    ‘v’：朝下三角形(triangle_down marker)
#    ‘^’：朝上三角形(triangle_up marker)
#    ‘<‘：朝左三角形(triangle_left marker)
#    ‘>’：朝右三角形(triangle_right marker)
#    ‘1’：(tri_down marker)
#    ‘2’：(tri_up marker)
#    ‘3’：(tri_left marker)
#    ‘4’：(tri_right marker)
#    ‘s’：正方形(square marker)
#    ‘p’：五边星(pentagon marker)
#    ‘*’：星型(star marker)
#    ‘h’：1号六角形(hexagon1 marker)
#    ‘H’：2号六角形(hexagon2 marker)
#    ‘+’：+号标记(plus marker)
#    ‘x’：x号标记(x marker)
#    ‘D’：菱形(diamond marker)
#    ‘d’：小型菱形(thin_diamond marker)
#    ‘|’：垂直线形(vline marker)
#    ‘_’：水平线形(hline marker)
#
# linestyle: 
#     '-', '--', '-.', ':', ''
# ===========================================================
x1 = 24.1
y1 = 0.718
plt.plot(
    x1,
    y1,
    color="#8ECFC9",
    linestyle="",
    marker="o",
    markersize=7,
    label="retinanet",
)

x2 = 21.0
y2 = 0.738
plt.plot(
    x2,
    y2,
    color="#FFBE7A",
    linestyle="",
    marker="s",
    markersize=10,
    label="faster-rcnn",
)

x3 = [48.1, 30.35]
y3 = [0.689, 0.728]
plt.plot(
    x3,
    y3,
    color="#FA7F6F",
    linestyle="--",
    marker="p",
    markersize=7,
    label="ssd",
)

plt.legend()                                 # 显示各label图例

# ===========================================================
#                         其它
# ===========================================================
plt.text(3, 0.5, '添加文字：y = sin(x)', fontproperties=custom_font)
plt.text(3.14, 0.75, r'$ \alpha \beta \pi $', size=25, fontproperties=custom_font)

# ===========================================================
#                         显示
# ===========================================================
plt.show()